/*
 * util.h
 *
 * Created: 29.10.2013 19:55:55
 *  Author: Elektronik
 */ 

#pragma once

//=============================================================

#include <inttypes.h>

//==============================================================

#ifndef NAKED_FUNC
	#define NAKED_FUNC __attribute__((naked))
#endif

#ifndef FORCE_INLINE
	#define FORCE_INLINE inline __attribute__((always_inline))
#endif

#ifndef OPTIMIZE_DEFAULT
	#define OPTIMIZE_DEFAULT __attribute__((optimize("O1")))
#endif

#ifndef OPTIMIZE_O0
	#define OPTIMIZE_O0 __attribute__((optimize("O0")))
#endif

#ifndef OPTIMIZE_O1
	#define OPTIMIZE_O1 __attribute__((optimize("O1")))
#endif

#ifndef OPTIMIZE_O2
	#define OPTIMIZE_O2 __attribute__((optimize("O2")))
#endif

#ifndef OPTIMIZE_O3
	#define OPTIMIZE_O3 __attribute__((optimize("O3")))
#endif

#ifndef OPTIMIZE_SIZE
	#define OPTIMIZE_SIZE __attribute__((optimize("Os")))
#endif

//===================================================================

#ifdef __cplusplus
	extern "C" {
#endif

//---------------------------------------------------------------------


// calc checkum for binary gcode buffer
uint16_t calc_checkum16(uint8_t* buffer, uint8_t length);

//---------------------------------------------------------------------

#ifdef __cplusplus
	};
#endif

//===================================================================
